﻿using System.Collections.Generic;
using 纸片人.InterfaceFolder;
using 纸片人.win2dEffectControl.DataClass;

namespace 纸片人.win2dEffectControl
{
    public interface IExporter
    {


     

        OutputType Type { get; set; }

        event DragOutputEffectHeader DragOutputEffect;
        event DeleteAllConnnectHeader DeleteAllConnnect;
        event ConnectSourceHeader ConnectSource;
        event ConnectSourceChangedHeader ConnectSourceChanged;

        /// <summary>
        /// 吹会控件，不同的类有不同的方法，需要重写
        /// </summary>
        void Destroy();
       
        /// <summary>
        /// 断开指定的连接
        /// </summary>
        /// <param name="connectElement"></param>
        void Disconnect (ConnectLineUIElement connectElement);

        /// <summary>
        /// 创建新的连接
        /// </summary>
        /// <param name="newConnectLine"></param>
        void OnConnectSourceInvoke(ConnectLineUIElement newConnectLine);
        /// <summary>
        /// 更改新的连接
        /// </summary>
        /// <param name="newConnectLine"></param>
        /// <param name="oldConnectLine"></param>
        void OnConnectSourceChangedInvoke(ConnectLineUIElement newConnectLine, ConnectLineUIElement oldConnectLine);

 

        /// <summary>
        /// 输出的连接线列表,里面包含了接收者
        /// </summary>
        List<ConnectLineUIElement> ListExportoneConnectElement { get; set; }


        /// <summary>
        /// 添加新的输出连接，里面包含接收者
        /// </summary>
        /// <param name="newConnectLine"></param>
        void AddExportoneConnectElement(ConnectLineUIElement newConnectLine);


        /// <summary>
        /// 
        /// </summary>
        /// <param name="newConnectLine"></param>
        void RemoveExportoneConnectElement(ConnectLineUIElement newConnectLine);

        /// <summary>
        /// 移除指定的接收者,不同的
        /// </summary>
        /// <param name="connectElement">连接的线段，里面包含有接收者</param>
        /// <param name="data">数据</param>
        void RemoveProvider(ConnectLineUIElement connectElement);
    }
}